home *** CD-ROM | disk | FTP | other *** search
File List | 1989-06-20 | 3.9 KB | 94 lines |
- ' =============================================================================
- ' M E M O R Y 12.05.89
- ' =============================================================================
- '
- ' Wollen Sie mit eigenen Programmen an die reservierten Bilder herankommen,
- ' können Sie dies mit folgenden Routinen ganz einfach tun.
- ' Diese Routinen wurden in GFABASIC 2.0 geschrieben, sollten aber in der
- ' Version 3.0 ebenfalls laufen.
- '
- ' Hier werden zunächst die einzelnen Routinen kurz dargestellt. Anschließend
- ' folgt dann deren Programmtext.
- '
- ' Bsp.1: @Memo_getadr(*Adresse%,*Anzahl%,*Ext%)
- ' Man erhält die Startadresse und die Anzahl der Bilder sowie
- ' eine Zusatzinformation (Integer, 2 Byte).
- '
- ' Bsp.2: @Memo_putadr(Adresse%,5,0)
- ' Falls Bilder reserviert wurden, können diese hier angemeldet werden.
- ' In diesem Fall befinden sich 5 Bilder ab Adresse 'Adresse%'.
- ' Als Zusatzinformation wird eine '0' übergeben.
- '
- ' Bsp.3: @Memo_putadr(Adresse%,12,-1)
- ' Es werden neue Werte für Adresse und Anzahl der Bilder gesetzt.
- ' Die Zusatzinfo bleibt unverändert. Wenn negative Werte übergeben
- ' werden, bleibt der jeweilige Parameter unverändert.
- '
- ' Bsp.4: @Memo_clradr
- ' So werden die Informationen des Infospeichers gelöscht, d.h. es
- ' werden die ersten zwei Bytes der Kennung gelöscht, so daß die
- ' restlichen Informationen von der Procedure Memo_getadr() nicht
- ' mehr erkannt werden.
- '
- ' So sieht das Format des 16 Byte langen Informationsspeichers aus. Er liegt
- ' hinter dem (phys.) Bildspeicher, also ab Xbios(2)+32000.
- '
- ' PICTUREvaaaannee = 16Bytes
- ' | || | |
- ' | || | erweiterte Information (z.Zt.=0): Wort/14
- ' | || Anzahl der Bilder: Wort/12
- ' | |Adresse des 1. Bildes: Langwort/8
- ' | Format-Version (=0): Byte/7
- ' Kennung: 7 Byte String/0
- '
- ' Hier sind die Routinen zur Abfrage des Speichers:
- '
- Procedure Memo_getadr(Aptr.%,Nptr.%,Eptr.%)
- Local Adresse.%,Info$,Adr.%,Num.%,Ext.% !Lokale Variablen
- '
- Info$=Space$(7) !7-Byte-String vorbereiten
- Adresse.%=Xbios(2)+32000 !Adresse ermitteln
- Bmove Adresse.%,Varptr(Info$),7 !Kennung in String kopieren
- '
- If Info$="PICTURE" And Peek(Adresse.%+7)=0 !Kennung und Version abfragen
- Adr.%=Lpeek(Adresse.%+8) !Bildadresse ...
- Num.%=Dpeek(Adresse.%+12) !Anzahl der Bilder ...
- Ext.%=Dpeek(Adresse.%+14) !und Zusatzinformationen holen
- ' !(-> ist zur Zeit unbenutzt)
- Else
- Adr.%=-1 !Bei falscher Kennung ...
- Num.%=-1 !wird jeder Variable ...
- Ext.%=-1 !'-1' übergeben
- '
- Endif
- '
- *Aptr.%=Adr.% !Und nun alle ...
- *Nptr.%=Num.% !Werte über die Pointer ...
- *Eptr.%=Ext.% !zurückgeben
- Return
- Procedure Memo_putadr(Adr%,Num%,Ext%)
- Local Adresse%,Kennung$ !Lokale Variablen
- '
- Kennung$="PICTURE" !Kennungs-String definieren
- Adresse%=Xbios(2)+32000 !Adresse ermitteln
- '
- Bmove Varptr(Kennung$),Adresse%,7 !Kennung übertragen
- '
- If Adr%>=0
- Lpoke Adresse%+8,Adr% !Adresse, ...
- Endif
- If Num%>=0
- Dpoke Adresse%+12,Num% !Anzahl und ...
- Endif
- If Ext%>=0
- Dpoke Adresse%+14,Ext% !Zusatzinfo setzen
- Endif
- Return
- Procedure Memo_clradr
- Local Adresse% !Lokale Variable
- '
- Adresse%=Xbios(2)+32000 !Adresse ermitteln
- '
- Dpoke Adresse%,0 !Kennung löschen
- Return
-